--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
.github/workflows/build-release.yml 60a4c6ab8b159c465c663848e8e75326d07430ee (60a4c6ab) Text, 35.77 KB
T8b949e# Single tagged-release pipeline: Linux release assets, Windows + macOS Electron
T8b949e# builds, Flatpak, Android APKs (dev/master track tags via android-apk-tag.yml), SLSA
T8b949e# provenance (generic generator: Linux, desktop, optional Android+Flatpak), optional cosign bundles, and one draft GitHub release.
T8b949e# Optional: same draft upload/ tree is mirrored to bunny.net Edge Storage for master/dev
T8b949e# tags when BUNNY_STORAGE_ACCESS_KEY is set (see draft job). -rc tags always use the
T8b949e# dev/ prefix; previous release folders under master/ and dev/ are pruned after each upload.
T8b949e# One workflow run per tag keeps the release graph immutable.
T8b949e#
T8b949e# Pinned first-party actions (bump tag and SHA together when upgrading):
T8b949e# actions/checkout@v6.0.1 8e8c483db84b4bee98b60c0593521ed34d9990e8
T8b949e# actions/setup-python@v6.2.0 a309ff8b426b58ec0e2a45f0f869d46889d02405
T8b949e# actions/setup-node@v6.1.0 395ad3262231945c25e8478fd5baf05154b1d79f
T8b949e# actions/upload-artifact@v5.0.0 330a01c490aca151604b8cf639adc76d48f6c5d4
T8b949e# actions/download-artifact@v5.0.0 634f93cb2916e3fdff6788551b99b062d0335ce0
T8b949e# actions/cache@v4.2.0 1bd1e32a3bdc45362d1e726936510720a7c30a57
T8b949e# actions/setup-java@v4.7.1 c5195efecf7bdfc987ee8bae7a71cb8b11521c00
T8b949e#
T8b949e# SLSA generator (must stay @vX.Y.Z semver per upstream):
T8b949e# slsa-framework/slsa-github-generator/generator_generic_slsa3.yml@v2.1.0
Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffrelease
Tff7b72onTb4b4b4:
Tff7b72pushTb4b4b4:
Tff7b72tagsTb4b4b4:
Tb4b4b4- Ta5d6ff"Ta5d6ff*Ta5d6ff"
Tff7b72workflow_dispatchTb4b4b4:
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffwrite
Tff7b72actionsTb4b4b4: Ta5d6ffwrite
Tff7b72id-tokenTb4b4b4: Ta5d6ffwrite
Tff7b72concurrencyTb4b4b4:
Tff7b72groupTb4b4b4: Ta5d6ffbuild-release-${{Ta5d6ff Ta5d6ffgithub.workflowTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.refTa5d6ff Ta5d6ff}}
Tff7b72cancel-in-progressTb4b4b4: Ta5d6fftrue
Tff7b72envTb4b4b4:
Tff7b72FORCE_JAVASCRIPT_ACTIONS_TO_NODE24Tb4b4b4: Ta5d6fftrue
Tff7b72NODE_OPTIONSTb4b4b4: Ta5d6ff--max-old-space-size=8192
Tff7b72PYTHON_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff3.14Ta5d6ff"
Tff7b72NODE_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff24Ta5d6ff"
Tff7b72UV_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff0.11.15Ta5d6ff"
Tff7b72PNPM_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff11.1.2Ta5d6ff"
Tff7b72COSIGN_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff3.0.6Ta5d6ff"
T8b949e# Official .deb from aquasecurity/trivy releases; scripts/ci/setup-trivy.sh verifies
T8b949e# checksums.txt (sigstore) + .deb SHA256 + .deb (sigstore). Bump with upstream tags.
Tff7b72TRIVY_VERSIONTb4b4b4: Ta5d6ff"Ta5d6ff0.69.3Ta5d6ff"
Tff7b72jobsTb4b4b4:
Tff7b72frontendTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ff./.github/workflows/frontend-build.yml
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72withTb4b4b4:
Tff7b72artifact_nameTb4b4b4: Ta5d6ffmeshchatx-frontend-release-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_attemptTa5d6ff Ta5d6ff}}
Tff7b72retention_daysTb4b4b4: Ta5d6ff7
Tff7b72pnpm_versionTb4b4b4: Ta5d6ff"Ta5d6ff11.1.2Ta5d6ff"
Tff7b72frontend-androidTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ff(AndroidTa5d6ff Ta5d6ff/Ta5d6ff Ta5d6ffPythonTa5d6ff Ta5d6ff3.11)
Tff7b72ifTb4b4b4: Ta5d6ffstartsWith(github.ref,Ta5d6ff Ta5d6ff'refs/tags/')
Tff7b72usesTb4b4b4: Ta5d6ff./.github/workflows/frontend-build.yml
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72withTb4b4b4:
Tff7b72artifact_nameTb4b4b4: Ta5d6ffmeshchatx-frontend-android-rel-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_attemptTa5d6ff Ta5d6ff}}
Tff7b72retention_daysTb4b4b4: Ta5d6ff7
Tff7b72python_versionTb4b4b4: Ta5d6ff"Ta5d6ff3.11Ta5d6ff"
Tff7b72pnpm_versionTb4b4b4: Ta5d6ff"Ta5d6ff11.1.2Ta5d6ff"
Tff7b72android-releaseTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffAndroidTa5d6ff Ta5d6ffAPKsTa5d6ff Ta5d6ff(tag)
Tff7b72ifTb4b4b4: Ta5d6ffstartsWith(github.ref,Ta5d6ff Ta5d6ff'refs/tags/')
Tff7b72needsTb4b4b4: Tb4b4b4[Te6edf3frontend-androidTb4b4b4]
Tff7b72secretsTb4b4b4: Ta5d6ffinherit
Tff7b72usesTb4b4b4: Ta5d6ff./.github/workflows/android-apk-tag.yml
Tff7b72withTb4b4b4:
Tff7b72frontend_artifact_nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.frontend-android.outputs.artifact_nameTa5d6ff Ta5d6ff}}
Tff7b72run_unit_testsTb4b4b4: Ta5d6fftrue
Tff7b72linux-releaseTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffLinuxTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ffassetsTa5d6ff Ta5d6ff(x64)
Tff7b72needsTb4b4b4: Ta5d6fffrontend
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff120
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72actionsTb4b4b4: Ta5d6ffwrite
Tff7b72envTb4b4b4:
Tff7b72FRONTEND_ARTIFACT_NAMETb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.frontend.outputs.artifact_nameTa5d6ff Ta5d6ff}}
Tff7b72MESHCHATX_FRONTEND_PREBUILTTb4b4b4: Ta5d6ff"Ta5d6ff1Ta5d6ff"
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffPython
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
Tff7b72withTb4b4b4:
Tff7b72python-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PYTHON_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffUVTa5d6ff Ta5d6ff(PyPITa5d6ff Ta5d6ffpin)
Tff7b72envTb4b4b4:
Tff7b72UV_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.UV_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-uv.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCacheTa5d6ff Ta5d6ffUVTa5d6ff Ta5d6ffdownloads
Tff7b72usesTb4b4b4: Ta5d6ffactions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57
Tff7b72withTb4b4b4:
Tff7b72pathTb4b4b4: Ta5d6ff~/.cache/uv
Tff7b72keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffrunner.osTa5d6ff Ta5d6ff}}-uv-${{Ta5d6ff Ta5d6ffhashFiles('uv.lock')Ta5d6ff Ta5d6ff}}
Tff7b72restore-keysTb4b4b4: Tb4b4b4|
Tff7b72${{ runner.os }}-uv-
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffNodeTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffpnpm
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/setup-node-pnpm
Tff7b72withTb4b4b4:
Tff7b72node-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.NODE_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72pnpm-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PNPM_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffLinuxTa5d6ff Ta5d6ffpackagingTa5d6ff Ta5d6ffAPTTa5d6ff Ta5d6ffdependencies
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-apt-linux-packaging.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffprojectTa5d6ff Ta5d6ffdependencies
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-deps.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.FRONTEND_ARTIFACT_NAMETa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffmeshchatx/public
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffVerifyTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifactTa5d6ff Ta5d6ffcontents
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72test -f meshchatx/public/index.html
Tff7b72test -d meshchatx/public/assets
Tff7b72test -d meshchatx/public/reticulum-docs-bundled/current
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetupTa5d6ff Ta5d6ffTask
Tff7b72runTb4b4b4: Ta5d6ffshTa5d6ff Ta5d6ffscripts/ci/setup-task.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffAptTa5d6ff Ta5d6ffupdateTa5d6ff Ta5d6ff(forTa5d6ff Ta5d6ffTrivyTa5d6ff Ta5d6ff.deb)
Tff7b72runTb4b4b4: Ta5d6ffshTa5d6ff Ta5d6ffscripts/ci/exec-priv.shTa5d6ff Ta5d6ffapt-getTa5d6ff Ta5d6ffupdateTa5d6ff Ta5d6ff-qq
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetupTa5d6ff Ta5d6ffTrivy
Tff7b72runTb4b4b4: Ta5d6ffshTa5d6ff Ta5d6ffscripts/ci/setup-trivy.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffrelease-assets
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-build-linux-release-assets.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ffartifactTa5d6ff Ta5d6ff(x64)
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-release-x64-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffrelease-assets/
Tff7b72if-no-files-foundTb4b4b4: Ta5d6fferror
Tff7b72retention-daysTb4b4b4: Ta5d6ff30
Tff7b72linux-release-arm64Tb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffLinuxTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ffassetsTa5d6ff Ta5d6ff(arm64)
Tff7b72needsTb4b4b4: Ta5d6fffrontend
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04-arm
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff120
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72actionsTb4b4b4: Ta5d6ffwrite
Tff7b72envTb4b4b4:
Tff7b72FRONTEND_ARTIFACT_NAMETb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.frontend.outputs.artifact_nameTa5d6ff Ta5d6ff}}
Tff7b72MESHCHATX_FRONTEND_PREBUILTTb4b4b4: Ta5d6ff"Ta5d6ff1Ta5d6ff"
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffPython
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
Tff7b72withTb4b4b4:
Tff7b72python-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PYTHON_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffUVTa5d6ff Ta5d6ff(PyPITa5d6ff Ta5d6ffpin)
Tff7b72envTb4b4b4:
Tff7b72UV_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.UV_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-uv.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCacheTa5d6ff Ta5d6ffUVTa5d6ff Ta5d6ffdownloads
Tff7b72usesTb4b4b4: Ta5d6ffactions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57
Tff7b72withTb4b4b4:
Tff7b72pathTb4b4b4: Ta5d6ff~/.cache/uv
Tff7b72keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffrunner.osTa5d6ff Ta5d6ff}}-uv-${{Ta5d6ff Ta5d6ffhashFiles('uv.lock')Ta5d6ff Ta5d6ff}}
Tff7b72restore-keysTb4b4b4: Tb4b4b4|
Tff7b72${{ runner.os }}-uv-
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffNodeTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffpnpm
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/setup-node-pnpm
Tff7b72withTb4b4b4:
Tff7b72node-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.NODE_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72pnpm-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PNPM_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffLinuxTa5d6ff Ta5d6ffpackagingTa5d6ff Ta5d6ffAPTTa5d6ff Ta5d6ffdependencies
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-apt-linux-packaging.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffprojectTa5d6ff Ta5d6ffdependencies
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-deps.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.FRONTEND_ARTIFACT_NAMETa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffmeshchatx/public
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffVerifyTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifactTa5d6ff Ta5d6ffcontents
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72test -f meshchatx/public/index.html
Tff7b72test -d meshchatx/public/assets
Tff7b72test -d meshchatx/public/reticulum-docs-bundled/current
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffrelease-assets
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-build-linux-release-assets.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ffartifactTa5d6ff Ta5d6ff(arm64)
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-release-arm64-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffrelease-assets/
Tff7b72if-no-files-foundTb4b4b4: Ta5d6fferror
Tff7b72retention-daysTb4b4b4: Ta5d6ff30
Tff7b72collect-linux-slsa-subjectsTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffsubjectsTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffcosignTa5d6ff Ta5d6ff(Linux)
Tff7b72needsTb4b4b4: Tb4b4b4[Te6edf3linux-releaseTb4b4b4, Te6edf3linux-release-arm64Tb4b4b4]
Tff7b72ifTb4b4b4: Ta5d6ffstartsWith(github.ref,Ta5d6ff Ta5d6ff'refs/tags/')
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72outputsTb4b4b4:
Tff7b72hashesTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.hash.outputs.hashesTa5d6ff Ta5d6ff}}
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72actionsTb4b4b4: Ta5d6ffwrite
Tff7b72id-tokenTb4b4b4: Ta5d6ffwrite
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffx64Ta5d6ff Ta5d6ffartifacts
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-release-x64-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffrelease-assets
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffarm64Ta5d6ff Ta5d6ffartifacts
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-release-arm64-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffrelease-assets
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffsubjectTa5d6ff Ta5d6ffhashes
Tff7b72idTb4b4b4: Ta5d6ffhash
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-slsa-hashes-release-assets.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffattestationsTa5d6ff Ta5d6ff(cosign)
Tff7b72envTb4b4b4:
Tff7b72COSIGN_PRIVATE_KEYTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.COSIGN_PRIVATE_KEYTa5d6ff Ta5d6ff}}
Tff7b72COSIGN_PASSWORDTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.COSIGN_PASSWORDTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_SERVER_URLTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.server_urlTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_REPOSITORYTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.repositoryTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_SHATb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.shaTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_REFTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.refTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_RUN_IDTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_RUN_ATTEMPTTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.run_attemptTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_WORKFLOWTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.workflowTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_WORKFLOW_FILETb4b4b4: Ta5d6ffbuild-release.yml
Tff7b72COSIGN_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.COSIGN_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -eu
Tff7b72if [ -z "${COSIGN_PRIVATE_KEY:-}" ]; then
Tff7b72echo "Skipping cosign attestations (no COSIGN_PRIVATE_KEY)."
Tff7b72exit 0
Tff7b72fi
Tff7b72sh scripts/ci/setup-cosign.sh "${COSIGN_VERSION}"
Tff7b72printf '%s\n' "$COSIGN_PRIVATE_KEY" > /tmp/cosign.key
Tff7b72chmod 600 /tmp/cosign.key
Tff7b72export COSIGN_KEY_PATH=/tmp/cosign.key
Tff7b72sh scripts/ci/attest-release-assets.sh ./release-assets
Tff7b72rm -f /tmp/cosign.key
Tff7b72flatpakTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffFlatpakTa5d6ff Ta5d6ff(electron-builder)
Tff7b72needsTb4b4b4: Ta5d6fffrontend
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff90
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72actionsTb4b4b4: Ta5d6ffwrite
Tff7b72envTb4b4b4:
Tff7b72FRONTEND_ARTIFACT_NAMETb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.frontend.outputs.artifact_nameTa5d6ff Ta5d6ff}}
Tff7b72MESHCHATX_FRONTEND_PREBUILTTb4b4b4: Ta5d6ff"Ta5d6ff1Ta5d6ff"
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffflatpakTa5d6ff Ta5d6fftoolchain
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72sudo apt-get update -y
Tff7b72sudo apt-get install -y --no-install-recommends \
Tff7b72flatpak \
Tff7b72flatpak-builder \
Tff7b72elfutils \
Tff7b72zstd \
Tff7b72desktop-file-utils \
Tff7b72appstream
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffflatpakTa5d6ff Ta5d6ffruntimesTa5d6ff Ta5d6ff(userTa5d6ff Ta5d6ffscope)
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72bash scripts/ensure-flatpak-flathub-remote.sh
Tff7b72flatpak --user install -y --noninteractive flathub \
Tff7b72org.freedesktop.Platform//25.08 \
Tff7b72org.freedesktop.Sdk//25.08 \
Tff7b72org.electronjs.Electron2.BaseApp//25.08
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffPython
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
Tff7b72withTb4b4b4:
Tff7b72python-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PYTHON_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffUVTa5d6ff Ta5d6ff(PyPITa5d6ff Ta5d6ffpin)
Tff7b72envTb4b4b4:
Tff7b72UV_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.UV_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-uv.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCacheTa5d6ff Ta5d6ffUVTa5d6ff Ta5d6ffdownloads
Tff7b72usesTb4b4b4: Ta5d6ffactions/cache@1bd1e32a3bdc45362d1e726936510720a7c30a57
Tff7b72withTb4b4b4:
Tff7b72pathTb4b4b4: Ta5d6ff~/.cache/uv
Tff7b72keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffrunner.osTa5d6ff Ta5d6ff}}-uv-${{Ta5d6ff Ta5d6ffhashFiles('uv.lock')Ta5d6ff Ta5d6ff}}
Tff7b72restore-keysTb4b4b4: Tb4b4b4|
Tff7b72${{ runner.os }}-uv-
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffNodeTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffpnpm
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/setup-node-pnpm
Tff7b72withTb4b4b4:
Tff7b72node-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.NODE_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72pnpm-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PNPM_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffdependencies
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-deps.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.FRONTEND_ARTIFACT_NAMETa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffmeshchatx/public
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffVerifyTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifactTa5d6ff Ta5d6ffcontents
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72test -f meshchatx/public/index.html
Tff7b72test -d meshchatx/public/assets
Tff7b72test -d meshchatx/public/reticulum-docs-bundled/current
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffflatpakTa5d6ff Ta5d6ffbundle
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-build-linux-flatpak.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffListTa5d6ff Ta5d6ffflatpakTa5d6ff Ta5d6ffoutput
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72ls -la dist 2>/dev/null || true
Tff7b72find dist -maxdepth 3 -type f \( -name "*.flatpak" -o -name "*.flatpakref" \) -print
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffflatpakTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-flatpak-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffdist/*.flatpak
Tff7b72if-no-files-foundTb4b4b4: Ta5d6fferror
Tff7b72retention-daysTb4b4b4: Ta5d6ff30
Tff7b72build-releaseTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ff(${{Ta5d6ff Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff}})
Tff7b72needsTb4b4b4: Ta5d6fffrontend
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72actionsTb4b4b4: Ta5d6ffwrite
Tff7b72strategyTb4b4b4:
Tff7b72fail-fastTb4b4b4: Ta5d6fffalse
Tff7b72matrixTb4b4b4:
Tff7b72includeTb4b4b4:
Tb4b4b4- Tff7b72osTb4b4b4: Ta5d6ffwindows-latest
Tff7b72labelTb4b4b4: Ta5d6ffwindows
Tff7b72timeoutTb4b4b4: Ta5d6ff120
Tff7b72build_scriptTb4b4b4: Ta5d6ffscripts/ci/github-build-windows.sh
Tff7b72artifact_prefixTb4b4b4: Ta5d6ffmeshchatx-windows
Tb4b4b4- Tff7b72osTb4b4b4: Ta5d6ffmacos-latest
Tff7b72labelTb4b4b4: Ta5d6ffmacos
Tff7b72timeoutTb4b4b4: Ta5d6ff180
Tff7b72build_scriptTb4b4b4: Ta5d6ffscripts/ci/github-build-macos.sh
Tff7b72artifact_prefixTb4b4b4: Ta5d6ffmeshchatx-macos
Tff7b72runs-onTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffmatrix.osTa5d6ff Ta5d6ff}}
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffmatrix.timeoutTa5d6ff Ta5d6ff}}
Tff7b72defaultsTb4b4b4:
Tff7b72runTb4b4b4:
Tff7b72shellTb4b4b4: Ta5d6ffbash
Tff7b72envTb4b4b4:
Tff7b72FRONTEND_ARTIFACT_NAMETb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.frontend.outputs.artifact_nameTa5d6ff Ta5d6ff}}
Tff7b72MESHCHATX_FRONTEND_PREBUILTTb4b4b4: Ta5d6ff"Ta5d6ff1Ta5d6ff"
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffPython
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
Tff7b72withTb4b4b4:
Tff7b72python-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PYTHON_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffUVTa5d6ff Ta5d6ff(PyPITa5d6ff Ta5d6ffpin)
Tff7b72envTb4b4b4:
Tff7b72UV_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.UV_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-uv.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffNodeTa5d6ff Ta5d6ffandTa5d6ff Ta5d6ffpnpm
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/setup-node-pnpm
Tff7b72withTb4b4b4:
Tff7b72node-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.NODE_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72pnpm-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PNPM_VERSIONTa5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffdependencies
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-install-deps.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffRosettaTa5d6ff Ta5d6ff(AppleTa5d6ff Ta5d6ffSilicon)
Tff7b72ifTb4b4b4: Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'macos'
Tff7b72runTb4b4b4: Ta5d6ff/usr/sbin/softwareupdateTa5d6ff Ta5d6ff--install-rosettaTa5d6ff Ta5d6ff--agree-to-licenseTa5d6ff Ta5d6ff||Ta5d6ff Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffEnsureTa5d6ff Ta5d6ffx86_64Ta5d6ff Ta5d6ffHomebrewTa5d6ff Ta5d6ff(/usr/local)Ta5d6ff Ta5d6ffforTa5d6ff Ta5d6ffuniversalTa5d6ff Ta5d6ffslice
Tff7b72ifTb4b4b4: Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'macos'
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-ensure-macos-x86-64-homebrew.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSetTa5d6ff Ta5d6ffupTa5d6ff Ta5d6ffPythonTa5d6ff Ta5d6ffx64Ta5d6ff Ta5d6ffforTa5d6ff Ta5d6ffcx_FreezeTa5d6ff Ta5d6ffuniversalTa5d6ff Ta5d6ffslice
Tff7b72idTb4b4b4: Ta5d6ffpython_x64
Tff7b72ifTb4b4b4: Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'macos'
Tff7b72usesTb4b4b4: Ta5d6ffactions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
Tff7b72withTb4b4b4:
Tff7b72python-versionTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.PYTHON_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72architectureTb4b4b4: Ta5d6ffx64
Tff7b72update-environmentTb4b4b4: Ta5d6fffalse
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffExportTa5d6ff Ta5d6ffPYTHON_CMD_X64Ta5d6ff Ta5d6ffforTa5d6ff Ta5d6ffmacTa5d6ff Ta5d6ffuniversalTa5d6ff Ta5d6ffbuild
Tff7b72ifTb4b4b4: Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'macos'
Tff7b72runTb4b4b4: Ta5d6ffechoTa5d6ff Ta5d6ff"PYTHON_CMD_X64=${{Ta5d6ff Ta5d6ffsteps.python_x64.outputs.python-pathTa5d6ff Ta5d6ff}}"Ta5d6ff Ta5d6ff>>Ta5d6ff Ta5d6ff"$GITHUB_ENV"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffx86_64Ta5d6ff Ta5d6fflibyamlTa5d6ff Ta5d6ffforTa5d6ff Ta5d6ffuniversalTa5d6ff Ta5d6ffcx_FreezeTa5d6ff Ta5d6ffslice
Tff7b72ifTb4b4b4: Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'macos'
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72# x86_64 libyaml for the darwin-x64 cx_Freeze slice (see
Tff7b72# github-ensure-macos-x86-64-homebrew.sh; /usr/local/bin/brew is
Tff7b72# guaranteed before this step on Apple Silicon runners).
Tff7b72arch -x86_64 /usr/local/bin/brew install libyaml || true
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffx86_64Ta5d6ff Ta5d6ffcodec2Ta5d6ff Ta5d6ffforTa5d6ff Ta5d6ffpycodec2Ta5d6ff Ta5d6ff(universalTa5d6ff Ta5d6ffslice)
Tff7b72ifTb4b4b4: Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'macos'
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72arch -x86_64 /usr/local/bin/brew install codec2
Tff7b72_codec2="$(arch -x86_64 /usr/local/bin/brew --prefix codec2)"
Tff7b72test -f "${_codec2}/include/codec2/codec2.h"
Tff7b72shopt -s nullglob
Tff7b72_libs=("${_codec2}/lib"/libcodec2*.dylib)
Tff7b72if [[ ${#_libs[@]} -eq 0 ]]; then
Tff7b72echo "no libcodec2*.dylib under ${_codec2}/lib" >&2
Tff7b72exit 1
Tff7b72fi
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffRustTa5d6ff Ta5d6ffx86_64-apple-darwinTa5d6ff Ta5d6fftargetTa5d6ff Ta5d6ff(cbor2Ta5d6ff Ta5d6ffx64Ta5d6ff Ta5d6ffslice)
Tff7b72ifTb4b4b4: Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'macos'
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-macos-rust-x64-target.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffprojectTa5d6ff Ta5d6ffdepsTa5d6ff Ta5d6ffintoTa5d6ff Ta5d6ffx64Ta5d6ff Ta5d6ffPythonTa5d6ff Ta5d6ff(macTa5d6ff Ta5d6ffuniversalTa5d6ff Ta5d6ffcx_Freeze)
Tff7b72ifTb4b4b4: Ta5d6ffmatrix.labelTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'macos'
Tff7b72envTb4b4b4:
Tff7b72PY_X64Tb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.python_x64.outputs.python-pathTa5d6ff Ta5d6ff}}
Tff7b72ARCHFLAGSTb4b4b4: Ta5d6ff"Ta5d6ff-archTe6edf3 Ta5d6ffx86_64Ta5d6ff"
Tff7b72CCTb4b4b4: Ta5d6ff"Ta5d6ffclangTe6edf3 Ta5d6ff-archTe6edf3 Ta5d6ffx86_64Ta5d6ff"
Tff7b72CXXTb4b4b4: Ta5d6ff"Ta5d6ffclang++Te6edf3 Ta5d6ff-archTe6edf3 Ta5d6ffx86_64Ta5d6ff"
Tff7b72CFLAGSTb4b4b4: Ta5d6ff"Ta5d6ff-archTe6edf3 Ta5d6ffx86_64Ta5d6ff"
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72_codec2="$(arch -x86_64 /usr/local/bin/brew --prefix codec2)"
Tff7b72arch -x86_64 /usr/local/bin/brew install openssl@3
Tff7b72_openssl="$(arch -x86_64 /usr/local/bin/brew --prefix openssl@3)"
Tff7b72export LDFLAGS="-L${_codec2}/lib -L${_openssl}/lib -arch x86_64"
Tff7b72export CPPFLAGS="-I${_codec2}/include -I${_openssl}/include -arch x86_64"
Tff7b72export PKG_CONFIG_PATH="${_codec2}/lib/pkgconfig:${_openssl}/lib/pkgconfig:/usr/local/lib/pkgconfig:/usr/local/share/pkgconfig"
Tff7b72export OPENSSL_DIR="${_openssl}"
Tff7b72export OPENSSL_LIB_DIR="${_openssl}/lib"
Tff7b72export OPENSSL_INCLUDE_DIR="${_openssl}/include"
Tff7b72arch -x86_64 "$PY_X64" -m pip install -U pip setuptools wheel
Tff7b72arch -x86_64 "$PY_X64" -m pip install --prefer-binary "cryptography==49.0.0"
Tff7b72arch -x86_64 "$PY_X64" -m pip install "cx-freeze>=7.0.0"
Tff7b72arch -x86_64 "$PY_X64" -m pip install -e .
Tff7b72arch -x86_64 "$PY_X64" scripts/patch_lxst_pyogg_ogg_ctypes.py
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifact
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.FRONTEND_ARTIFACT_NAMETa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffmeshchatx/public
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffVerifyTa5d6ff Ta5d6fffrontendTa5d6ff Ta5d6ffartifactTa5d6ff Ta5d6ffcontents
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72test -f meshchatx/public/index.html
Tff7b72test -d meshchatx/public/assets
Tff7b72test -d meshchatx/public/reticulum-docs-bundled/current
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffdistributables
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ff"${{Ta5d6ff Ta5d6ffmatrix.build_scriptTa5d6ff Ta5d6ff}}"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffdistTa5d6ff Ta5d6ffartifacts
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffmatrix.artifact_prefixTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffdist/
Tff7b72if-no-files-foundTb4b4b4: Ta5d6fferror
Tff7b72collect-desktop-slsa-subjectsTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffsubjectsTa5d6ff Ta5d6ff(WindowsTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffmacOS)
Tff7b72needsTb4b4b4: Tb4b4b4[Te6edf3build-releaseTb4b4b4]
Tff7b72ifTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72always() &&
Tff7b72!cancelled() &&
Tff7b72startsWith(github.ref, 'refs/tags/') &&
Tff7b72(needs.build-release.result == 'success' || needs.build-release.result == 'failure')
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72outputsTb4b4b4:
Tff7b72hashesTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.hash.outputs.hashesTa5d6ff Ta5d6ff}}
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffWindowsTa5d6ff Ta5d6ffdist
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-windows-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffdl/win
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffmacOSTa5d6ff Ta5d6ffdist
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-macos-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffdl/mac
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffHashTa5d6ff Ta5d6ffdesktopTa5d6ff Ta5d6ffartifacts
Tff7b72idTb4b4b4: Ta5d6ffhash
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-slsa-hashes-desktop-dist.shTa5d6ff Ta5d6ffdl/winTa5d6ff Ta5d6ffdl/mac
Tff7b72slsa-provenance-linuxTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffprovenanceTa5d6ff Ta5d6ff(Linux)
Tff7b72needsTb4b4b4: Tb4b4b4[Te6edf3collect-linux-slsa-subjectsTb4b4b4]
Tff7b72ifTb4b4b4: Ta5d6ffstartsWith(github.ref,Ta5d6ff Ta5d6ff'refs/tags/')
Tff7b72permissionsTb4b4b4:
Tff7b72id-tokenTb4b4b4: Ta5d6ffwrite
Tff7b72contentsTb4b4b4: Ta5d6ffwrite
Tff7b72actionsTb4b4b4: Ta5d6ffread
Tff7b72usesTb4b4b4: Ta5d6ffslsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0
Tff7b72withTb4b4b4:
Tff7b72base64-subjectsTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.collect-linux-slsa-subjects.outputs.hashesTa5d6ff Ta5d6ff}}
Tff7b72upload-assetsTb4b4b4: Ta5d6fffalse
Tff7b72provenance-nameTb4b4b4: Ta5d6ffmeshchatx-linux-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}.intoto.jsonl
Tff7b72slsa-provenance-desktopTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffprovenanceTa5d6ff Ta5d6ff(WindowsTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffmacOS)
Tff7b72needsTb4b4b4: Tb4b4b4[Te6edf3collect-desktop-slsa-subjectsTb4b4b4]
Tff7b72ifTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72always() &&
Tff7b72!cancelled() &&
Tff7b72startsWith(github.ref, 'refs/tags/') &&
Tff7b72needs.collect-desktop-slsa-subjects.result == 'success'
Tff7b72permissionsTb4b4b4:
Tff7b72id-tokenTb4b4b4: Ta5d6ffwrite
Tff7b72contentsTb4b4b4: Ta5d6ffwrite
Tff7b72actionsTb4b4b4: Ta5d6ffread
Tff7b72usesTb4b4b4: Ta5d6ffslsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0
Tff7b72withTb4b4b4:
Tff7b72base64-subjectsTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.collect-desktop-slsa-subjects.outputs.hashesTa5d6ff Ta5d6ff}}
Tff7b72upload-assetsTb4b4b4: Ta5d6fffalse
Tff7b72provenance-nameTb4b4b4: Ta5d6ffmeshchatx-desktop-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}.intoto.jsonl
Tff7b72collect-android-flatpak-slsa-subjectsTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffsubjectsTa5d6ff Ta5d6ff(AndroidTa5d6ff Ta5d6ffAPKTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffFlatpak)
Tff7b72needsTb4b4b4: Tb4b4b4[Te6edf3android-releaseTb4b4b4, Te6edf3flatpakTb4b4b4]
Tff7b72ifTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72always() &&
Tff7b72!cancelled() &&
Tff7b72startsWith(github.ref, 'refs/tags/') &&
Tff7b72(needs.android-release.result == 'success' || needs.android-release.result == 'skipped') &&
Tff7b72(needs.flatpak.result == 'success' || needs.flatpak.result == 'failure')
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72outputsTb4b4b4:
Tff7b72hashesTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.hash.outputs.hashesTa5d6ff Ta5d6ff}}
Tff7b72has_subjectsTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.hash.outputs.has_subjectsTa5d6ff Ta5d6ff}}
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffAndroidTa5d6ff Ta5d6ffAPKTa5d6ff Ta5d6ffbundle
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-android-apks-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffdl/android
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffFlatpakTa5d6ff Ta5d6ffartifact
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-flatpak-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffdl/flatpak
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffHashTa5d6ff Ta5d6ffAndroidTa5d6ff Ta5d6ff/Ta5d6ff Ta5d6ffFlatpakTa5d6ff Ta5d6ffartifacts
Tff7b72idTb4b4b4: Ta5d6ffhash
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-slsa-hashes-apk-flatpak.shTa5d6ff Ta5d6ffdl/androidTa5d6ff Ta5d6ffdl/flatpak
Tff7b72slsa-provenance-android-flatpakTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffprovenanceTa5d6ff Ta5d6ff(AndroidTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffFlatpak)
Tff7b72needsTb4b4b4: Tb4b4b4[Te6edf3collect-android-flatpak-slsa-subjectsTb4b4b4]
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffstartsWith(github.ref,Ta5d6ff Ta5d6ff'refs/tags/')Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffneeds.collect-android-flatpak-slsa-subjects.outputs.has_subjectsTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'true'Ta5d6ff Ta5d6ff}}
Tff7b72permissionsTb4b4b4:
Tff7b72id-tokenTb4b4b4: Ta5d6ffwrite
Tff7b72contentsTb4b4b4: Ta5d6ffwrite
Tff7b72actionsTb4b4b4: Ta5d6ffread
Tff7b72usesTb4b4b4: Ta5d6ffslsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml@v2.1.0
Tff7b72withTb4b4b4:
Tff7b72base64-subjectsTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.collect-android-flatpak-slsa-subjects.outputs.hashesTa5d6ff Ta5d6ff}}
Tff7b72upload-assetsTb4b4b4: Ta5d6fffalse
Tff7b72provenance-nameTb4b4b4: Ta5d6ffmeshchatx-android-flatpak-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}.intoto.jsonl
Tff7b72draft-github-releaseTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffDraftTa5d6ff Ta5d6ffGitHubTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ff(allTa5d6ff Ta5d6ffassetsTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffSLSA)
Tff7b72needsTb4b4b4:
Tb4b4b4- Ta5d6fflinux-release
Tb4b4b4- Ta5d6fflinux-release-arm64
Tb4b4b4- Ta5d6ffcollect-linux-slsa-subjects
Tb4b4b4- Ta5d6ffslsa-provenance-linux
Tb4b4b4- Ta5d6ffbuild-release
Tb4b4b4- Ta5d6ffslsa-provenance-desktop
Tb4b4b4- Ta5d6ffflatpak
Tb4b4b4- Ta5d6ffandroid-release
Tb4b4b4- Ta5d6ffcollect-android-flatpak-slsa-subjects
Tb4b4b4- Ta5d6ffslsa-provenance-android-flatpak
Tff7b72ifTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72always() &&
Tff7b72!cancelled() &&
Tff7b72startsWith(github.ref, 'refs/tags/') &&
Tff7b72needs.linux-release.result == 'success' &&
Tff7b72needs.linux-release-arm64.result == 'success' &&
Tff7b72needs.collect-linux-slsa-subjects.result == 'success' &&
Tff7b72needs.slsa-provenance-linux.result == 'success' &&
Tff7b72(needs.build-release.result == 'success' || needs.build-release.result == 'failure') &&
Tff7b72needs.collect-desktop-slsa-subjects.result == 'success' &&
Tff7b72needs.slsa-provenance-desktop.result == 'success'
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff45
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffwrite
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckout
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
Tff7b72withTb4b4b4:
Tff7b72fetch-depthTb4b4b4: Ta5d6ff0
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffResolveTa5d6ff Ta5d6fftagTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6fftrack
Tff7b72idTb4b4b4: Ta5d6ffrelease_track
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72git fetch --no-tags origin dev master
Tff7b72sha="$(git rev-parse HEAD)"
Tff7b72on_m=false
Tff7b72on_d=false
Tff7b72while IFS= read -r line; do
Tff7b72ref="$(printf '%s' "$line" | sed 's/^[[:space:]]*//;s/[[:space:]]*$//')"
Tff7b72case "$ref" in
Tff7b72origin/master) on_m=true ;;
Tff7b72origin/dev) on_d=true ;;
Tff7b72esac
Tff7b72done < <(git branch -r --contains "${sha}")
Tff7b72if [[ "${on_m}" == true ]]; then
Tff7b72track=master
Tff7b72elif [[ "${on_d}" == true ]]; then
Tff7b72track=dev
Tff7b72else
Tff7b72track=none
Tff7b72fi
Tff7b72echo "track=${track}" >> "${GITHUB_OUTPUT}"
Tff7b72echo "Resolved tag ${GITHUB_REF_NAME} -> track=${track}"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ffassetsTa5d6ff Ta5d6ff(x64)
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-release-x64-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffupload
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffLinuxTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ffassetsTa5d6ff Ta5d6ff(arm64)
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-release-arm64-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffupload
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffWindowsTa5d6ff Ta5d6ffdist
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-windows-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffupload/win
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffmacOSTa5d6ff Ta5d6ffdist
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-macos-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffupload/mac
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffFlatpakTa5d6ff Ta5d6ffartifact
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-linux-flatpak-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffupload/flatpak
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffAndroidTa5d6ff Ta5d6ffAPKTa5d6ff Ta5d6ffbundle
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-android-apks-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffupload/android
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffSLSATa5d6ff Ta5d6ffprovenanceTa5d6ff Ta5d6ff(Linux)
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.slsa-provenance-linux.outputs.provenance-nameTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffupload
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffSLSATa5d6ff Ta5d6ffprovenanceTa5d6ff Ta5d6ff(desktop)
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffneeds.slsa-provenance-desktop.outputs.provenance-nameTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffupload
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffDownloadTa5d6ff Ta5d6ffSLSATa5d6ff Ta5d6ffprovenanceTa5d6ff Ta5d6ff(AndroidTa5d6ff Ta5d6ff+Ta5d6ff Ta5d6ffFlatpak)
Tff7b72continue-on-errorTb4b4b4: Ta5d6fftrue
Tff7b72usesTb4b4b4: Ta5d6ffactions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffmeshchatx-android-flatpak-${{Ta5d6ff Ta5d6ffgithub.ref_nameTa5d6ff Ta5d6ff}}.intoto.jsonl
Tff7b72pathTb4b4b4: Ta5d6ffupload
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffSLSATa5d6ff Ta5d6ffcosignTa5d6ff Ta5d6ffbundlesTa5d6ff Ta5d6ff(desktopTa5d6ff Ta5d6ffonly)
Tff7b72envTb4b4b4:
Tff7b72COSIGN_PRIVATE_KEYTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.COSIGN_PRIVATE_KEYTa5d6ff Ta5d6ff}}
Tff7b72COSIGN_PASSWORDTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.COSIGN_PASSWORDTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_SERVER_URLTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.server_urlTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_REPOSITORYTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.repositoryTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_SHATb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.shaTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_REFTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.refTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_RUN_IDTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.run_idTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_RUN_ATTEMPTTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.run_attemptTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_WORKFLOWTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.workflowTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_WORKFLOW_FILETb4b4b4: Ta5d6ffbuild-release.yml
Tff7b72COSIGN_VERSIONTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.COSIGN_VERSIONTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -eu
Tff7b72if [ -z "${COSIGN_PRIVATE_KEY:-}" ]; then
Tff7b72echo "Skipping cosign attestations (no COSIGN_PRIVATE_KEY)."
Tff7b72exit 0
Tff7b72fi
Tff7b72sh scripts/ci/setup-cosign.sh "${COSIGN_VERSION}"
Tff7b72printf '%s\n' "$COSIGN_PRIVATE_KEY" > /tmp/cosign.key
Tff7b72chmod 600 /tmp/cosign.key
Tff7b72export COSIGN_KEY_PATH=/tmp/cosign.key
Tff7b72for d in upload/win upload/mac; do
Tff7b72if [ -d "$d" ]; then
Tff7b72sh scripts/ci/attest-release-assets.sh "$d"
Tff7b72fi
Tff7b72done
Tff7b72rm -f /tmp/cosign.key
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffdraftTa5d6ff Ta5d6ffrelease
Tff7b72envTb4b4b4:
Tff7b72GH_TOKENTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.tokenTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Ta5d6ffbashTa5d6ff Ta5d6ffscripts/ci/github-draft-release-upload-assets.shTa5d6ff Ta5d6ffupload
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ffassetsTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffBunnyTa5d6ff Ta5d6ffStorage
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.release_track.outputs.trackTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'master'Ta5d6ff Ta5d6ff||Ta5d6ff Ta5d6ffsteps.release_track.outputs.trackTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'dev'Ta5d6ff Ta5d6ff}}
Tff7b72envTb4b4b4:
Tff7b72BUNNY_STORAGE_ACCESS_KEYTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.BUNNY_STORAGE_ACCESS_KEYTa5d6ff Ta5d6ff}}
Tff7b72BUNNY_STORAGE_BASE_URLTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffvars.BUNNY_STORAGE_BASE_URLTa5d6ff Ta5d6ff}}
Tff7b72BUNNY_RELEASE_TRACKTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsteps.release_track.outputs.trackTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72if [[ -z "${BUNNY_STORAGE_ACCESS_KEY:-}" ]]; then
Tff7b72echo "::notice::Skipping Bunny Storage (set repository secret BUNNY_STORAGE_ACCESS_KEY to enable)."
Tff7b72exit 0
Tff7b72fi
Tff7b72export BUNNY_STORAGE_BASE_URL="${BUNNY_STORAGE_BASE_URL:-https://la.storage.bunnycdn.com/meshchatx}"
Tff7b72_ref_lc="${GITHUB_REF_NAME,,}"
Tff7b72if [[ "${_ref_lc}" == *"-rc"* ]]; then
Tff7b72export BUNNY_STORAGE_OBJECT_PREFIX="dev/${GITHUB_REF_NAME}"
Tff7b72else
Tff7b72export BUNNY_STORAGE_OBJECT_PREFIX="${BUNNY_RELEASE_TRACK}/${GITHUB_REF_NAME}"
Tff7b72fi
Tff7b72python3 scripts/ci/github-upload-bunny-storage-release-assets.py upload
Tff7b72release-artifact-gateTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffVerifyTa5d6ff Ta5d6ffrequiredTa5d6ff Ta5d6fftaggedTa5d6ff Ta5d6ffreleaseTa5d6ff Ta5d6ffartifacts
Tff7b72ifTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72always() &&
Tff7b72!cancelled() &&
Tff7b72startsWith(github.ref, 'refs/tags/')
Tff7b72needsTb4b4b4:
Tb4b4b4- Ta5d6ffflatpak
Tb4b4b4- Ta5d6ffbuild-release
Tb4b4b4- Ta5d6ffdraft-github-release
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-latest
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffFailTa5d6ff Ta5d6ffwhenTa5d6ff Ta5d6ffrequiredTa5d6ff Ta5d6ffbuildTa5d6ff Ta5d6ffjobsTa5d6ff Ta5d6ffdidTa5d6ff Ta5d6ffnotTa5d6ff Ta5d6ffsucceed
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72set -euo pipefail
Tff7b72fail=0
Tff7b72if [[ "${{ needs.flatpak.result }}" != "success" ]]; then
Tff7b72echo "::error::Flatpak job did not succeed (${{ needs.flatpak.result }})"
Tff7b72fail=1
Tff7b72fi
Tff7b72if [[ "${{ needs.build-release.result }}" != "success" ]]; then
Tff7b72echo "::error::Desktop build job did not succeed (${{ needs.build-release.result }})"
Tff7b72fail=1
Tff7b72fi
Tff7b72if [[ "${{ needs.draft-github-release.result }}" != "success" ]]; then
Tff7b72echo "::error::Draft release job did not succeed (${{ needs.draft-github-release.result }})"
Tff7b72fail=1
Tff7b72fi
Tff7b72exit "$fail"
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────